// ts数据类型
// number
// string
// boolean
//unknow
//never
//any
//void
//字面量
//下面的四个要会定义
// Array
//枚举
//元祖
//object


//1.number
//2.string
//3.boolean

let num: number = 10;
//ts会在定义变量的时候规定数据类型

let isTrue: boolean = true


// 4.字面量
let myData: "aaa"
//字面量类型 有点像常量  在放类型的地方放一个数值 之后就不能变了

//5.数组
// 定义数组的方法：
// let arr: number[] = [1, 2, 3, "aaa"]
let arr1: (number | string)[] = [1, 2, 3, 4, "aaa"]
// 还能用泛型来定义数组
let arr2: Array<string> = ["aa", "bb", "cc"]
//还能用自定义类型和接口定义数组
//后期讲


//6.元祖 tuple 
//规定了长度以及每一项都是什么类型的数组就是元祖
let myTuple: [number, string] = [10, "aaa"]


//7.枚举
enum myPush {
    keixing = 1,
    anhuishengwu = 2,
    beijingjiyun = 3,
    jiyun2 = 4,
    jiyun3 = 5,
    jiyun4 = 6
}
//枚举就是把可能出现的情况用代号或者编号表示 这样数据里存的是编号，但是我们看到的是我们能看明白的描述 比如这里这个枚举代表了打的那种疫苗 

let obj = {
    name: "小明",
    age: 18,
    push: myPush.beijingjiyun
}
console.log(obj);

//8.any  任意类型 可以理解为不受 ts类型的控制
let myAny: any = 10
myAny = "aaa"
num = myAny


//9.unknow 未知类型 unknow 还是一种类型 unknow 受别人的影响
let myUn: unknown = 10
myUn = "aaa"
// num = myUn


//10 void 空 函数没有返回值的时候就返回void

function fun1(a: number, b: number): void {
    console.log(a + b);
}

//11.never 一般用来抛出错误
function fun2(): never {
    throw new Error("抛出错误")
}

//12.object
// 可以用自定义类型和接口定义
// 后续会详细讲










